import socket

# 买手机
# SOCK_STREAM流式协议=》tcp协议
# SOCK_DGRAM报式协议=》udp协议
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定手机卡
phone.bind(('127.0.0.1', 8080))

# 开机
phone.listen(5)  # 5 指半连接池的大小

# 链接循环，反复提供服务
while True:
    # 等待电话连接请求：拿到电话连接conn
    conn, client_addr = phone.accept()
    # 通信循环
    while True:
        try:
            # 收消息
            data = conn.recv(1024)  # 最大接受数据量为1024字节
            if len(data) == 0:
                # 再unix中，客户端非法断开连接，data为空会陷入死循环，
                break

            print("客户端发来的消息:", data.decode('utf-8'))
            # 发消息
            conn.send(data.upper())
        except Exception:
            # 针对win的客户端非法断开的异常捕捉
            break

    # 关闭电话连接conn
    conn.close()


